<?php
include_once('include/Config.php');
include_once('entities/Cliente.php');

Class ClienteDAL {

    private $link;
    
    public $result;
    public $errorDesc;


    public function __construct() {
        $this->conectar();
    }

    private function conectar() {
        
        //Tomado del config.php 
        $this->link = $GLOBALS["DBConnPDO"];
        
    }

    public function obtenerCliente() {
        $sql = "select concat(c.nombre,' ' ,c.Apellido)as nomapel,c.FechaNacimiento,tp.Descripcion descdni,c.NumeroDocumento,c.Sexo,c.idTipoEstadoCivil,c.Email,c.Email2,c.Calle,c.Numero,c.Piso,c.Depto,c.Telefono,c.Telefono2,loc.Descripcion descloc,pr.Descripcion descprov,c.CodigoPostal,c.CodigoPostalManual,c.idTipoActividad,c.isActivo,c.isBorrado from cliente c inner join tipodocumento tp on c.idTipoDocumento = tp.idTipoDocumento inner join provincia pr on c.idProvincia = pr.idProvincia inner join localidad loc on c.idLocalidad = loc.idLocalidad";
        $listaCliente = array();

        foreach ($this->link->query($sql) as $row) {

            $cliente = new Cliente();

            $cliente->setApellido($row['nomapel']);
            $cliente->setCalle($row['Calle']);
            $cliente->setCodigoPostal($row['CodigoPostal']);
            $cliente->setCodigoPostalManual($row['CodigoPostalManual']);
            $cliente->setDepto($row['Depto']);
            $cliente->setEmail($row['Email']);
            $cliente->setEmail2($row['Email2']);
            $cliente->setFechaNacimiento($row['FechaNacimiento']);
            $cliente->setIdTipoDocumento($row['descdni']);
            $cliente->setNumeroDocumento($row['NumeroDocumento']);
            $cliente->setSexo($row['Sexo']);
            $cliente->setIdTipoEstadoCivil($row['idTipoEstadoCivil']);
            $cliente->setNumero($row['Numero']);
            $cliente->setPiso($row['Piso']);
            $cliente->setTelefono($row['Telefono']);
            $cliente->setTelefono2($row['Telefono2']);
            $cliente->setIdLocalidad($row['descloc']);
            $cliente->setIdProvincia($row['descprov']);
            $cliente->setIdTipoActividad($row['idTipoActividad']);
            $cliente->setIsActivo($row['isActivo']);
            $cliente->setIsBorrado($row['isBorrado']);

            $listaCliente [] = $cliente;
        }
        return $listaCliente;
    }

    public function modificarCliente($cliente) {

        try {

            $sql = "UPDATE cliente SET ";
            $sql .= "Nombre = :Nombre ";
            $sql .= ",Apellido = :Apellido ";
            $sql .= ",FechaNacimiento = :FechaNacimiento ";
            $sql .= ",idTipoDocumento = :idTipoDocumento ";
            $sql .= ",NumeroDocumento = :NumeroDocumento ";
            $sql .= ",Sexo = :Sexo ";
            $sql .= ",idTipoEstadoCivil = :idTipoEstadoCivil ";
            $sql .= ",Email = :Email ";
            $sql .= ",Email2 = :Email2 ";
            $sql .= ",Calle = :Calle ";
            $sql .= ",Numero = :Numero ";
            $sql .= ",Piso = :Piso ";
            $sql .= ",Depto = :Depto ";
            $sql .= ",Telefono = :Telefono ";
            $sql .= ",Telefono2 = :Telefono2 ";
            $sql .= ",idLocalidad = :idLocalidad ";
            $sql .= ",idProvincia = :idProvincia ";
            $sql .= ",CodigoPostal = :CodigoPostal ";
            $sql .= ",CodigoPostalManual = :CodigoPostalManual ";
            $sql .= ",idTipoActividad = :idTipoActividad ";
            $sql .= "WHERE idCliente = :idCliente ";

						//echo "<br>\$sqlUpdateCliente==>" . $sql;

            $stmt = $this->link->prepare($sql);

            $Nombre = $cliente->getNombre();
            $Apellido = $cliente->getApellido();
            $FechaNacimiento = $cliente->getFechaNacimiento();
            $idTipoDocumento = $cliente->getIdTipoDocumento();
            $NumeroDocumento = $cliente->getNumeroDocumento();
            $Sexo = $cliente->getSexo();
            $idTipoEstadoCivil = $cliente->getIdTipoEstadoCivil();
            $Email = $cliente->getEmail();
            $Email2 = $cliente->getEmail2();
            $Calle = $cliente->getCalle();
            $Numero = $cliente->getNumero();
            $Piso = $cliente->getPiso(9);
            $Depto = $cliente->getDepto();
            $Telefono = $cliente->getTelefono();
            $Telefono2 = $cliente->getTelefono2();
            $idLocalidad = $cliente->getIdLocalidad();
            $idProvincia = $cliente->getIdProvincia();
            $CodigoPostal = $cliente->getCodigoPostal();
            $CodigoPostalManual = $cliente->getCodigoPostalManual() == NULL ? '' : $cliente->getCodigoPostalManual();
            $idTipoActividad = $cliente->getIdTipoActividad();
            $idCliente = $cliente->getIdCliente();

            $date = str_replace('/', '-', $FechaNacimiento);
            $FechaNacimiento = date("Y-m-d", strtotime($date));

						//
						//Formateo la forma de guardar
						//saco espacios adelante y paso a mayuscula
						
						$strNombreSave = trim(strtoupper($Nombre));
						$strApellidoSave = trim(strtoupper($Apellido));
						$strEmailSave = trim(strtoupper($Email));
						$strEmail2Save = trim(strtoupper($Email2));
						
						$strCalleSave = trim(strtoupper($Calle));
						$strNumeroSave = trim(strtoupper($Numero));
						$strPisoSave = trim(strtoupper($Piso));
						$strDeptoSave = trim(strtoupper($Depto));
						
						$strTelefonoSave = trim(strtoupper($Telefono));
						$strTelefonoSave = str_replace("-", "", $strTelefonoSave);
						$strTelefonoSave = str_replace("/", "", $strTelefonoSave);
						$strTelefonoSave = str_replace(" ", "", $strTelefonoSave);

						$strTelefono2Save = trim(strtoupper($Telefono2));
						$strTelefono2Save = str_replace("-", "", $strTelefono2Save);
						$strTelefono2Save = str_replace("/", "", $strTelefono2Save);
						$strTelefono2Save = str_replace(" ", "", $strTelefono2Save);
						
						$strCodigoPostalManualSave = trim(strtoupper($CodigoPostalManual));
						

            $stmt->bindParam(':Nombre', $strNombreSave, PDO::PARAM_STR);
            $stmt->bindParam(':Apellido', $strApellidoSave, PDO::PARAM_STR);
            $stmt->bindParam(':FechaNacimiento', $FechaNacimiento, PDO::PARAM_STR);
            $stmt->bindParam(':idTipoDocumento', $idTipoDocumento, PDO::PARAM_INT);
            $stmt->bindParam(':NumeroDocumento', $NumeroDocumento, PDO::PARAM_STR);
            $stmt->bindParam(':Sexo', $Sexo, PDO::PARAM_STR);
            $stmt->bindParam(':idTipoEstadoCivil', $idTipoEstadoCivil, PDO::PARAM_INT);
            $stmt->bindParam(':Email', $strEmailSave, PDO::PARAM_STR);
            $stmt->bindParam(':Email2', $strEmail2Save, PDO::PARAM_STR);
            $stmt->bindParam(':Calle', $strCalleSave, PDO::PARAM_STR);
            $stmt->bindParam(':Numero', $strNumeroSave, PDO::PARAM_STR);
            $stmt->bindParam(':Piso', $strPisoSave, PDO::PARAM_STR);
            $stmt->bindParam(':Depto', $strDeptoSave, PDO::PARAM_STR);
            $stmt->bindParam(':Telefono', $strTelefonoSave, PDO::PARAM_STR);
            $stmt->bindParam(':Telefono2', $strTelefono2Save, PDO::PARAM_STR);
            $stmt->bindParam(':idLocalidad', $idLocalidad, PDO::PARAM_INT);
            $stmt->bindParam(':idProvincia', $idProvincia, PDO::PARAM_INT);
            $stmt->bindParam(':CodigoPostal', $CodigoPostal, PDO::PARAM_STR);
            $stmt->bindParam(':CodigoPostalManual', $strCodigoPostalManualSave, PDO::PARAM_STR);
            $stmt->bindParam(':idTipoActividad', $idTipoActividad, PDO::PARAM_INT);
            $stmt->bindParam(':idCliente', $idCliente, PDO::PARAM_INT);

            $stmt->execute();
            $stmt->closeCursor();
            
            $this->result = 0;
            $this->errorDesc = "";
            return 1;
            
        } catch (PDOException $e) {
            $this->result = -1;
            $this->errorDesc = $e->getMessage();
            return $this->result;
        }
    }

    public function insertarCliente($cliente) {

        try {

            $sql = " INSERT INTO cliente( ";
            $sql .= "Nombre ";
            $sql .= ",Apellido ";
            $sql .= ",FechaNacimiento ";
            $sql .= ",idTipoDocumento ";
            $sql .= ",NumeroDocumento ";
            $sql .= ",Sexo ";
            $sql .= ",idTipoEstadoCivil ";
            $sql .= ",Email ";
            $sql .= ",Email2 ";
            $sql .= ",Calle ";
            $sql .= ",Numero ";
            $sql .= ",Piso ";
            $sql .= ",Depto ";
            $sql .= ",Telefono ";
            $sql .= ",Telefono2 ";
            $sql .= ",idLocalidad ";
            $sql .= ",idProvincia ";
            $sql .= ",CodigoPostal ";
            $sql .= ",CodigoPostalManual ";
            $sql .= ",idTipoActividad ";
            $sql .= ",isActivo ";
            $sql .= ",isBorrado ";
            $sql .= ") VALUES (";
            $sql .= ":Nombre";
            $sql .= ",:Apellido ";
            $sql .= ",:FechaNacimiento ";
            $sql .= ",:idTipoDocumento ";
            $sql .= ",:NumeroDocumento ";
            $sql .= ",:Sexo ";
            $sql .= ",:idTipoEstadoCivil ";
            $sql .= ",:Email ";
            $sql .= ",:Email2 ";
            $sql .= ",:Calle ";
            $sql .= ",:Numero ";
            $sql .= ",:Piso ";
            $sql .= ",:Depto ";
            $sql .= ",:Telefono ";
            $sql .= ",:Telefono2 ";
            $sql .= ",:idLocalidad ";
            $sql .= ",:idProvincia ";
            $sql .= ",:CodigoPostal ";
            $sql .= ",:CodigoPostalManual ";
            $sql .= ",:idTipoActividad";
            $sql .= ",:isActivo ";
            $sql .= ",:isBorrado ";
            $sql .= ")";

            $stmt = $this->link->prepare($sql);

            $Nombre = $cliente->getNombre();
            $Apellido = $cliente->getApellido();
            $FechaNacimiento = $cliente->getFechaNacimiento();
            $idTipoDocumento = $cliente->getIdTipoDocumento();
            $NumeroDocumento = $cliente->getNumeroDocumento();
            $Sexo = $cliente->getSexo();
            $idTipoEstadoCivil = $cliente->getIdTipoEstadoCivil();
            $Email = $cliente->getEmail();
            $Email2 = $cliente->getEmail2();
            $Calle = $cliente->getCalle();
            $Numero = $cliente->getNumero();
            $Piso = $cliente->getPiso(9);
            $Depto = $cliente->getDepto();
            $Telefono = $cliente->getTelefono();
            $Telefono2 = $cliente->getTelefono2();
            $idLocalidad = $cliente->getIdLocalidad();
            $idProvincia = $cliente->getIdProvincia();
            $CodigoPostal = $cliente->getCodigoPostal();
            $CodigoPostalManual = $cliente->getCodigoPostalManual() == NULL ? '' : $cliente->getCodigoPostalManual();
            $isActivo = true;
            $isBorrado = false;
            $idTipoActividad = $cliente->getIdTipoActividad();
            $date = str_replace('/', '-', $FechaNacimiento);
            $FechaNacimiento = date("Y-m-d", strtotime($date));

            //
						//Formateo la forma de guardar
						//saco espacios adelante y paso a mayuscula
						
						$strNombreSave = trim(strtoupper($Nombre));
						$strApellidoSave = trim(strtoupper($Apellido));
						$strEmailSave = trim(strtoupper($Email));
						$strEmail2Save = trim(strtoupper($Email2));
						
						$strCalleSave = trim(strtoupper($Calle));
						$strNumeroSave = trim(strtoupper($Numero));
						$strPisoSave = trim(strtoupper($Piso));
						$strDeptoSave = trim(strtoupper($Depto));
						
						$strTelefonoSave = trim(strtoupper($Telefono));
						$strTelefonoSave = str_replace("-", "", $strTelefonoSave);
						$strTelefonoSave = str_replace("/", "", $strTelefonoSave);
						$strTelefonoSave = str_replace(" ", "", $strTelefonoSave);

						$strTelefono2Save = trim(strtoupper($Telefono2));
						$strTelefono2Save = str_replace("-", "", $strTelefono2Save);
						$strTelefono2Save = str_replace("/", "", $strTelefono2Save);
						$strTelefono2Save = str_replace(" ", "", $strTelefono2Save);
						
						$strCodigoPostalManualSave = trim(strtoupper($CodigoPostalManual));
						
            
            $stmt->bindParam(':Nombre', strtoupper($strNombreSave), PDO::PARAM_STR);
            $stmt->bindParam(':Apellido', strtoupper($strApellidoSave), PDO::PARAM_STR);
            $stmt->bindParam(':Email', strtoupper($strEmailSave), PDO::PARAM_STR);
            $stmt->bindParam(':Email2', strtoupper($strEmail2Save), PDO::PARAM_STR);
            $stmt->bindParam(':Calle', strtoupper($strCalleSave), PDO::PARAM_STR);
            $stmt->bindParam(':Numero', strtoupper($strNumeroSave), PDO::PARAM_STR);
            $stmt->bindParam(':Piso', strtoupper($strPisoSave), PDO::PARAM_STR);
            $stmt->bindParam(':Depto', strtoupper($strDeptoSave), PDO::PARAM_STR);
            $stmt->bindParam(':Telefono', $strTelefonoSave, PDO::PARAM_STR);
            $stmt->bindParam(':Telefono2', $strTelefono2Save, PDO::PARAM_STR);
            $stmt->bindParam(':NumeroDocumento', $NumeroDocumento, PDO::PARAM_STR);
            $stmt->bindParam(':Sexo', $Sexo, PDO::PARAM_STR);
            $stmt->bindParam(':idTipoEstadoCivil', $idTipoEstadoCivil, PDO::PARAM_INT);
            $stmt->bindParam(':CodigoPostal', $CodigoPostal, PDO::PARAM_STR);
            $stmt->bindParam(':CodigoPostalManual', $strCodigoPostalManualSave, PDO::PARAM_STR);
            $stmt->bindParam(':isActivo', $isActivo, PDO::PARAM_BOOL);
            $stmt->bindParam(':isBorrado', $isBorrado, PDO::PARAM_BOOL);
            $stmt->bindParam(':idTipoDocumento', $idTipoDocumento, PDO::PARAM_INT);
            $stmt->bindParam(':idLocalidad', $idLocalidad, PDO::PARAM_INT);
            $stmt->bindParam(':idProvincia', $idProvincia, PDO::PARAM_INT);
            $stmt->bindParam(':idTipoActividad', $idTipoActividad, PDO::PARAM_INT);
            $stmt->bindParam(':FechaNacimiento', $FechaNacimiento, PDO::PARAM_STR);
            
            $stmt->execute();
            $stmt->closeCursor();
            
            $this->result = 0;
            $this->errorDesc = "";
            return $this->link->lastInsertId();
            
        } catch (PDOException $e) {
            $this->result = -1;
            $this->errorDesc = $e->getMessage();
            return $this->result;
        }
    }

}

?>